Flash memories are non-volatile semiconductor memory devices used for data storage by controlling electrons staying in the floating gates. The approach of floating gate is used for storing data via the storage of electrons at flash cells, and comprises steps of: connecting the control gate to a high voltage and connecting the drain to a low voltage while programming the flash cells. Due to the voltage difference between the control gate and the drain, the floating gate is capable of maintaining a voltage Vt while the flash cell is being programmed. After removing the high voltage and the low voltage from the control gate and the drain, the floating gates then preserve the electrons.
Due to the characteristics of vibration-proof, low noise and low power consumption, flash storage devices are widely used in recent days. With the development of techniques, the usage of flash memories is more popular. Except being used as a portable data storage media like a thumb drive, a compact flash card (CF card), a secure digital card (SD card), a multi media card (MMC card), nowadays, flash memories are used for solid state drive (herein after, SSD) and intend to replace the conventional hard disks in personal computers.
According to the various circuit combinations, flash memories can be classified into different types like nand-flash memories, nor-flash memories etc. The usage of the nand-flash memories is more popular than the usage of the nor-flash memories in practical application due to the following reasons: First of all, the erasing period of the nand-flash memories is shorter than the nor-flash memories. Secondly, the nand-flash memories have higher storage density. Besides, the number of erasing times of the nand-flash memories is ten times more than the number of erasing times of the nor-flash memories.
Generally speaking, a flash storage device comprises nand-flash memories, and a control chip. Depending on the various implementation techniques, nand-flash memories in the market can be separated into a single-level cell style of flash memory (herein after, SLC flash memory), or a multi-level cell style of flash memory (herein after, MLC flash memory).
Simply specking, the distinct difference between the SLC flash memories and the MLC flash memories is, only one bit of data is stored in each cell (floating gate) of SLC flash memories, while two or more bits of data are stored in each cell (floating gate) of MLC flash memories. In other words, the floating gate of the MLC flash memories has a higher unit capacity for data storage, and this implies that MLC flash memories uses less space for storing the same quantity of data. Although the MLC flash memories have some shortages like: higher error rate for data programming, shorter life, and longer block erasing time, longer page programming time, the MLC flash memories are actually more common in practice due to its advantages of higher data storage density and lower manufacture cost. Hence MLC flash memories are widely used for mass storage application, especially for SSD.
In order to avoid failures occurred while accessing data, it is very common to provide data control or management mechanisms for flash memories access. For example, proceeding bad block management (referred as, BBM) in order to detect and mark trouble blocks in the flash memories and further avoid the usage of such trouble blocks latter on. Another example is providing wear-leveling techniques to keep a record of the eraseing times of each block in the flash memory, and avoid the chances that a host erases only certain blocks as it might shorten the life of the flash storage device. Flash storage device uses error correcting codes (herein after, ECC) for detecting or examining error while programming or reading data. Besides, flash storage device is capable of providing relative control mechanism for speeding up the access speed, or diminishing the data crash problem caused by unstable power supply.
ECC are used for both bit error correction and bit error detection, and ECC can be implemented by different algorithms in practice. For example, Hamming Code, Reed Solomom Code etc. are used in conventional techniques for ECC.
All ECC algorithms have their limitations, that is, once the number of error bits in the flash memory is more than ECC algorithms can detect, ECC is not able to recover the data. This implies that there is a chance to access incorrect data stored in the flash memory.
For example, while accessing a 4k bytes page, two 2k bytes of allocation unit might be used. Besides, an ECC with 64 bytes length might be used for each page. By doing so, the ECC are capable of correcting incorrect data if the number of error bits is no more than 32 bits in the same page.
In other words, once the ECC reach their limitations and not able to correct the content stored in the flash memories, that is, in the previous example, if the number of error bits is more than 32 bits, the ECC are not capable of finding out the incorrect data nor correcting them. This implies that the data stored in the flash memories are damaged, and this is very dangerous for data storage devices. As the functions of ECC are limited, it is important to guarantee the correctness of data stored in flash memories. As for the MLC flash memories, this issue becomes more important as MLC flash memories are wildly used for mass data storage with higher error rate during data accessing.
Moreover, as flash memories use floating gate to store data, it happens the electrons stored at the floating gates are easily missing in a high temperature environment. Besides, in a low temperature environment, electrons are not easily to be injected or pulled off the floating gates. This result in the content of data stored in the flash memories being affected, and this phenomena becomes more often when the process technique is more advanced. In other words, the data stored in the flash memories are affected by the temperature in the surrounding environment, and this might increase the number of error bits. Since the sensitivity to the temperature becomes a serious problem for flash memories nowadays, it might result in that the occasions of ECC not capable of correcting data are more. Therefore, the intention of the present invention is to propose an approach to solve the problem.